// 自己封装的微信工具类
import jweixin from '@/components/jweixin-module/index1.6.js'
import $http from '@/common/http.interceptor.js'

export default {
    //判断是否在微信中  
    isWechat: function() {
        var ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
            // console.log('是微信客户端')
            return true;
        } else {
            // console.log('不是微信客户端')
            return false;
        }
    },
	// 关闭当前页面
	closeWindow: function(){
		jweixin.closeWindow();
	},
    //初始化sdk配置  
    initJssdkShare: function(callback, url) {
		return new Promise((resolve, rejecte) => {
			$http.get('login/qyticket').then(res => {
				const { nonceStr, timestamp,signature,appId  } = res
				jweixin.config({
					beta: true,
				    debug: false,
				    appId, timestamp, nonceStr, signature,
					jsApiList: [
						'checkJsApi',
						'scanQRCode',
						'chooseImage',
						'previewImage',
						'uploadImage',
						'getLocalImgData',
						'startRecord',
						'stopRecord', 
						'onVoiceRecordEnd',
						'playVoice',
						'pauseVoice',
						'stopVoice',
						'onVoicePlayEnd', 
						'uploadVoice',
						'translateVoice',
						'setClipboardData',
						'previewFile',
						'onHistoryBack',
						'invoke',
						'hideOptionMenu',
						/* 初始化蓝牙 -->  搜索设备 --> 连接设备*/
						"closeBluetoothAdapter",
						'openBluetoothAdapter',
						'startBluetoothDevicesDiscovery',
						'getBluetoothDevices'
					]
				});
				// 成功验证
				jweixin.ready(res => {
					resolve(res)
					callback && callback()
					// uni.showToast({
					// 	title:'SDK初始化成功',
					// 	image:'/static/image/success.png'
					// })
					// alert('sdk初始化成功！')
					 // config信息验证后会执行ready方法，所有接口调用都必须在config接口获得结果之后，config是一个客户端的异步操作，
					 // 所以如果需要在页面加载时就调用相关接口，则须把相关接口放在ready函数中调用来确保正确执行。
					 // 对于用户触发时才调用的接口，则可以直接调用，不需要放在ready函数中。
				})
				
				jweixin.error(err => {
					rejecte(err)
					 uni.showModal({
					 	showCancel:false,
					 	icon:'none',
					 	content:"初始化微信JS-SDK失败\n请关闭页面重试",
					 	success:()=> {
					 		jweixin.closeWindow()
					 	}
					 })
					 this.$method.vibrate([20,100,700])	
				})
			})
		})
    },
	//拉起微信扫描
	scanCode: function(callback){
		return new Promise((resolve, rejectd) => {
			jweixin.scanQRCode({
			    desc: 'scanQRCode desc',
			    needResult: 1, // 默认为0，扫描结果由企业微信处理，1则直接返回扫描结果，
			    scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是条形码（一维码），默认二者都有
			    success: function(res) {
			        resolve(res)
			    },
			    error: function(err) {
					rejectd(err)
			        if (res.errMsg.indexOf('function_not_exist') > 0) {
			            alert('版本过低请升级')
			        }
			    }
			});
		})
		
	},
	//选择图片  
	chooseImage: function(count) {		if (!this.isWechat()) {return}		return new Promise((resolve, rejectd) => {			jweixin.chooseImage({				count: count || 9,				sizeType: ['compressed'],				sourceType: ['album', 'camera'],				success: function(rs) {					resolve(rs)				}			})		})	},
	/* 上传图片 */
	uploadImage:function(params){
		return new Promise((resolve, rejectd) => {
		   jweixin.uploadImage({
			   localId: params, // 需要上传的图片的本地ID，由chooseImage接口获得
			   isShowProgressTips: 1, // 默认为1，显示进度提示
			   success: function (res) {
				   var serverId = res.serverId; // 返回图片的服务器端ID
					resolve(serverId)
			   },
			   fail:function(err){
				   alert(JSON.stringify(err))
			   }
		   })  
		})
	},
	/* 获取base64图片 */
	getLocalImgData:function(params){
		return new Promise((resolve, rejectd) => {
			jweixin.getLocalImgData({
			    localId: params, // 图片的localID
				success: function (res) {
					var localData = res.localData; 
					resolve(localData)
				},
				fail:function(err){
					alert(JSON.stringify(err))
				}
			});
		})
	},
	//预览文件
	previewFile:function(thePath){
		jweixin.invoke('previewFile',{
			url: thePath, // 需要预览文件的地址(必填，可以使用相对路径)
			name: '', // 需要预览文件的文件名(不填的话取url的最后部分)
			size: 1048576 // 需要预览文件的字节大小(必填)
		})
	},
	// 开始录音
	startRecord:function(callback){
		jweixin.startRecord();
	},
	//结束录音
	stopRecord:function(callback){
		jweixin.stopRecord({
			success: function (res) {
				var localId = res.localId;
				callback(localId)
			}
		});
	},
	//60秒结束录音
	onVoiceRecordEnd:function(callback){
		jweixin.onVoiceRecordEnd({
		    // 录音时间超过一分钟没有停止的时候会执行 complete 回调
		    complete: function (res) {
		        var localId = res.localId;
				callback(localId)
		    }
		});
	},
	//语音转文字
	translateVoice:function(params){
	       return new Promise((resolve, rejectd) => {
			   jweixin.translateVoice({
			       localId: params, // 需要识别的音频的本地Id，由录音相关接口获得，音频时长不能超过60秒
			       isShowProgressTips: 1, // 默认为1，显示进度提示
			       success: function (res) {
			           // alert(res.translateResult); // 语音识别的结果
					   let Result=res.translateResult
					   resolve(Result)
			       }
			   });
			   
		   })
	    },  
	//上传语音
	uploadVoice:function(params){
	   return new Promise((resolve, rejectd) => {
		 jweixin.uploadVoice({
			 localId: params, // 需要上传的音频的本地ID，由stopRecord接口获得
			 isShowProgressTips: 1, // 默认为1，显示进度提示
			 success: function (res) {
				 var serverId = res.serverId; // 返回音频的服务器端ID
				  resolve(serverId)
			 }
		 });
	   })
	 },  
	// 播放接口
	playVoice:function(localId){jweixin.playVoice({ localId: localId })},
	// 暂停播放
	pauseVoice:function(localId){jweixin.pauseVoice({ localId: localId })},
	/* 需要停止的音频 */
	stopVoice:function(localId){jweixin.stopVoice({ localId: localId })},
	//监听语音播放完
	onVoicePlayEnd:function(callback){
		return new Promise((resolve, rejectd) => {
		   jweixin.onVoicePlayEnd({
			   success: function (res) {
				   var localId = res.localId; // 返回音频的本地ID
					 resolve(localId)
			   }
		   })
		}) 	 
	},  
	/* 返回事件监听 */
	onHistoryBack:function(callback){
		jweixin.invoke('onHistoryBack',{},callback)
	},
	//打开位置  
	openlocation:function(data,callback){
		if (!this.isWechat()) {  
			//console.log('不是微信客户端')  
			return;  
		}  
		this.initJssdk(function(res) {  
			jweixin.ready(function() {  
				jweixin.openLocation({//根据传入的坐标打开地图  
					latitude:data.latitude,  
					longitude:data.longitude  
				});  
			});  
		});  
	},  
	 //在需要定位页面调用  
	getlocation: function(callback) {  
		if (!this.isWechat()) {  
			//console.log('不是微信客户端')  
			return;  
		}  
		this.initJssdk(function(res) {  
			jweixin.ready(function() {  
				jweixin.getLocation({  
					type: 'gcj02', // 默认为wgs84的gps坐标，如果要返回直接给openLocation用的火星坐标，可传入'gcj02'  
					success: function (res) {  
						// console.log(res);  
						callback(res)  
					},  
					fail:function(res){  
						console.log(res)  
					},  
					// complete:function(res){  
					//     console.log(res)  
					// }  
				});  
			});  
		});  
	},  
    //在需要自定义分享的页面中调用  
    share: function(data, url) {
        url = url ? url : window.location.href;
        console.log("url:"+url)
        if (!this.isWechat()) {
            return;
        }
        //每次都需要重新初始化配置，才可以进行分享  
        this.initJssdkShare(function(signData) {
            jweixin.ready(function() {
                var shareData = {
                    title: data && data.title ? data.title : signData.site_name,
                    desc: data && data.desc ? data.desc : signData.site_description,
                    link: url,
                    imgUrl: data && data.img ? data.img : signData.site_logo,
                    success: function(res) {
                        // 分享后的一些操作,比如分享统计等等
                    },
                    cancel: function(res) {}
                };
                //分享给朋友接口  
                jweixin.onMenuShareAppMessage(shareData);
                //分享到朋友圈接口  
                jweixin.onMenuShareTimeline(shareData);
            });
        }, url);
    },
	setClipboardData:function(params){
		return new Promise((reso,rej) => {
			jweixin.setClipboardData({
			  data: params,    // 设置的
			  success: function(res) {
				  alert(reso)
			      reso(reso)
			  }
			})
		})
	},
	/* 分享链接 */
	locationUrl:function(params){
		jweixin.invoke(
			"shareWechatMessage", {
				title: location.href, // 分享标题
				desc: '', // 分享描述
				link: '', // 分享链接
				imgUrl: '' // 分享封面
		    }, function(res) {
		        if (res.err_msg == "shareWechatMessage:ok") {
		        }
		    }
		);
	},
	hideOptions:function(){
		jweixin.hideOptionMenu();
	},
	/* 关闭蓝牙模块，使其进入未初始化状态 */
	closeBluetoothAdapter:function(){
		return new Promise((resolve,rejecte) => {
			jweixin.invoke('closeBluetoothAdapter',{},function(res){
				debugger
				if (res.err_msg.includes("openBluetoothAdapter:ok")) {
					resolve()
				}
			})
		})
	},
	/* 初始化蓝牙模块 ， */
	openBluetoothInit:function(){
		const _this = this 
		return new Promise((resolve,rejecte) => {
			_this.closeBluetoothAdapter().then(closeRes => {
				jweixin.invoke('openBluetoothAdapter',{},function(res){
					if (res.err_msg.includes("openBluetoothAdapter:ok")) {
						resolve()
					}else {
						alert('请打开蓝牙开关')
					}
				})
			})
		})
	},
	/* 搜索蓝牙设备 */
	searchBluetooth:function(){
		return new Promise((resolve,rejecte) => {
			jweixin.invoke('startBluetoothDevicesDiscovery',{},function(res){
				if(res.err_msg.includes("startBluetoothDevicesDiscovery:ok")){
					uni.showLoading({title:'搜索设备中...'})
					debugger
					setTimeout(() => {resolve(),uni.hideLoading()},5000)
				}else {
					alert('搜索设备时出了一些问题')
				}
			})
		})
	},
	/* 获取搜索到的蓝牙设备 */
	getBluetooth:function(){
		return new Promise((resolve,rejecte) => {
			jweixin.invoke('getBluetoothDevices',{},function(res){
				if(res.err_msg.includes("getBluetoothDevices:ok")){
					debugger
					resolve(res.devices)
				}else {
					alert('未搜索到设备列表')
				}
			})
		})
	},
	/* 获取当前蓝牙设备的所有service */
	getBthService:function(){
		 jweixin.invoke('getBLEDeviceServices', {deviceId:12312}, function(res) {  
				alert(JSON.stringify(res))
			if (res.err_msg == "shareWechatMessage:ok") {
			} 
		}); 
	}
}
